import pandas as pd
import datetime,os,sys
from tqdm import tqdm

#判断授权有效时间
def 判断授权():
    # 定义开始日期和结束日期
    start_date = datetime.datetime(2024, 2, 9)
    end_date = datetime.datetime(2024, 2, 9)
    now = datetime.datetime.now()
    # 判断当前时间是否在指定日期之间
    if start_date <= now <= end_date:
        程序授权 = True
    else:
        程序授权 = False
    程序授权 = True
    return 程序授权
#获取本地的数据文件
def 获取文件信息(文件前缀,文件后缀):
    excel_file=""
    # 获取当前执行Python文件所在的目录路径
    current_dir = os.path.dirname(os.path.realpath(sys.argv[0]))
    # 获取当前目录下的所有文件和文件夹
    files = os.listdir(current_dir)
    # 遍历所有文件和文件夹，找到Excel文件
    for file in files:
        if  文件前缀  in file and 文件后缀 in file :
            # 获取Excel文件名
            excel_file = file
            break
    # 拼接Excel文件完整路径
    excel_path = os.path.join(current_dir, excel_file)
    # print("Excel文件路径：", excel_path)
    # print("Excel文件名：", excel_file)
    return excel_file,excel_path
文件名,文件路径=获取文件信息("sheet","dta")
print(f"开始读取以下目录文件：{文件路径}")
原始数据=pd.read_stata(文件路径)

#求上一年行业的数字化转型平均水平
行业平均水平=原始数据.groupby(["year","行业"]).agg({"szhzx":"mean"})
行业样本数量=原始数据.groupby(["year","行业"]).agg({"szhzx":"count"})
行业平均水平 = 行业平均水平.reset_index()

行业样本数量 = 行业样本数量.reset_index()

def 上年行业数字化平均水平(企业ID,年份,行业):
    try:
        #剔除当前企业
        样本数量=行业样本数量[(行业样本数量["year"]==(年份-1)) &(行业样本数量["行业"]==行业)]["szhzx"].iloc[0]
        行业汇总=行业平均水平[(行业平均水平["year"]==(年份-1)) &(行业平均水平["行业"]==行业)]["szhzx"].iloc[0]*样本数量
        上年数据=原始数据[(原始数据["id"]==企业ID) & (原始数据["year"]==(年份-1))]["szhzx"].iloc[0]
        # print(企业ID,年份,行业)
        # print(样本数量)
        # print(行业汇总)
        # print(上年数据)
        if 样本数量==1 and len(原始数据[(原始数据["id"]==企业ID) & (原始数据["year"]==(年份-1))]["szhzx"])==1:
            #上年只有自己一家企业
            result = 0.00
        else:
            result=(行业汇总-上年数据)/(样本数量-1)
    except:
        result=0.00
    # print(result)
    # print("---------------")
    return result


if 判断授权():
    # 计算模拟增量、IV2
    原始数据["上年行业转型均值share"] = 0
    原始数据["当年增长率shift"]=0
    原始数据["模拟增量shift×share"]=0
    原始数据["IV2离差的三次方"]=0
    # 统计每年全部样本的均值
    全样本均值={}
    for 年份 in list(set(原始数据["year"].tolist())):
        全样本均值[str(年份)]=原始数据[原始数据["year"]==年份]["szhzx"].mean()
    for i,j in tqdm(原始数据.iterrows()):
        # print(j["year"],j["id"])
        try:
            当年增长率=全样本均值[str(j["year"])]/全样本均值[str(j["year"]-1)]-1
        except:
            当年增长率=0
        上年行业平均水平=上年行业数字化平均水平(j["id"],j["year"],j["行业"])
        # print(上年行业平均水平)
        模拟增量=当年增长率*上年行业平均水平
        原始数据.loc[i, "上年行业转型均值share"] = 上年行业平均水平
        原始数据.loc[i, "当年增长率shift"] = 当年增长率
        原始数据.loc[i,"模拟增量shift×share"]=模拟增量
        原始数据.loc[i, "IV2离差的三次方"] = (j["szhzx"]-模拟增量)**3
    新文件路径=文件路径.replace(文件名,"公司DT数据.xlsx")
    原始数据.to_excel(新文件路径, sheet_name="公司DT数据",index=False)
    新文件路径2=文件路径.replace(文件名,"公司DT数据.dta")
    # 原始数据.to_stata(新文件路径2)

    w = pd.io.stata.StataWriterUTF8(新文件路径2, 原始数据)
    w.write_file()
    print("数据已生成,结束输入y")

    while input().lower() != 'y':
        break
else:
    print("无软件授权，无法运行，请联系工作人员")
    while input().lower() != 'y':
        break

